#pragma once

#include <string>
#include <queue>
#include <vector>
#include <boost/ptr_container/ptr_vector.hpp>

#include "../CardsGroup.hpp"
#include "../CardControl.h"
#include "../../../../utils/gui/Control.h"
#include "../../../../domain/models/Card.h"
#include "../../../../domain/models/CardsCollection.h"

namespace Views {
	namespace Helpers {
		namespace Graphic {
			namespace Deduction {
				class SearchedCardsDialog: public Utils::GUI::Control
				{
				protected:
					PlayersCardsGroup* players_cards_group;
					WeaponsCardsGroup* weapons_cards_group;

					typedef boost::signal<void (Cards::PlayerCard*, Cards::WeaponCard*)> OnCardsPick;
					OnCardsPick cardsPickEvent;

					Cards::PlayerCard* picked_player;
					Cards::WeaponCard* picked_weapon;

				public:
					SearchedCardsDialog(Cards::PlayersCards players_cards, Cards::WeaponsCards weapons_cards);
		
					boost::signals::connection doOnCardsPick(const OnCardsPick::slot_function_type& slot);

				protected:
					void onPlayerCardClick(Cards::PlayerCard*);
					void onWeaponCardClick(Cards::WeaponCard*);
				};
			}
		}
	}
}
